// 给定一个按照升序排列的整数数组 nums，和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。

// 如果数组中不存在目标值 target，返回 [-1, -1]。

var searchRange = function(nums, target) {
    let i = nums.indexOf(target);
    let arr = [];
    if (i == -1) { return [-1, -1] };
    arr.push(i);
    while (nums[i] == nums[i + 1]) {
        i++;
    }
    arr.push(i);
    return arr;
};

searchRange([1, 2, 3, 4, 5, 5, 5, ], 5);

// 进阶
var searchRange = function(nums, target) {
    return [nums.indexOf(target), nums.lastIndexOf(target)]
};

// 双指针二分查找
var searchRange = function(nums, target) {
    let left = 0,
        right = nums.length - 1
    let findNumberList = []
    while (left <= right) {
        const center = Math.floor((left + right) / 2);
        if (target == nums[center]) {
            let max = min = center;
            while (target == nums[max] || target == nums[min]) {
                if (target == nums[max]) max++
                    if (target == nums[min]) min--;
            }

            return [++min, --max]
        } else if (target > nums[center]) {
            left = center + 1
        } else {
            right = center - 1
        }

    }
    return [-1, -1]
};